查看原文
其他

技术文档丨LGSVL Simulator使用详解

阿波君 Apollo开发者社区 2022-07-29


LGSVL Simulator是一款开源的无人驾驶仿真系统,支持Linux和Windows,可以对接Apollo及Autoware自动驾驶软件使用。运行该仿真系统需要一台带NVidia独立显卡的高配置的电脑。我下载的是Windows版本的Simulator,并通过访问指定的ip地址的方式与运行在Linux上的Apollo建立连接。


《技术文档丨用LGSVL仿真器运行Apollo 5.0》的分享中,详细讲解了如何让LGSVL Simulator对接Apollo 5.0。本文主要讲解LGSVL Simulator本身具体使用方法。


注意:本文提到的Apollo(3.0)5.0是LG维护的一个分支,其中包含针对该仿真系统的修改,请不要使用Apollo官方版本。


这篇blog可以参考五个网页,第一个最基本的是“Getting Started”网页(具体link见下面),另外四个分别介绍WebUI的各个标签页的用法和传感器的配置。


“Getting Started”网页:

https://www.lgsvlsimulator.com/docs/getting-started/



  以下,ENJOY  





开始运行分三步:


1、下载最新的可执行文件(Windows或者Linux),可以用这个网页给的link,也可以直接从《官网》(链接见文末)下载。

2、确认安装了最新的NVIDIA驱动。

3、解压并运行下载的可执行文件。


如果用户希望自己编译生成可执行文件,可以参考:

https://www.lgsvlsimulator.com/docs/build-instructions/


启动Simulator以后:


1、点击中间的"Open Browser..."按钮,这会打开一个网页(Web UI),所有后续操作都在这个网页上操作。

2、在Web UI里面的Simulations页面选择地图、车辆,配置其他参数,然后运行这个Simulation(Simulator第一次运行时会默认下载8个地图、4个车辆,并用他们生成5个仿真配置)。

 




更具体的Web UI的使用方法可以参考以下几个页面:


《Web UI地图选项卡说明》(链接见文末),Map可以处于以下状态:


  • 带有本地URL或已经下载的Map将具有Vaild状态。

  • 如果这个Map资源包的URL不是本地的,并且资源包不在本地数据库中,那么该地图需要下载。当前一次只下载一个资源包。

    如果一个资源包正在下载,Map将显示一个灰色的点,该状态将是Downloading并显示下载百分比。

    ○ 如果另一个资源包正在下载,图标将是橙色的,该状态将会Downloading但是不显示下载百分比。

    按“stop”键可中断正在下载的Map。

  • 如果在模拟中该Map不可用,它将处于Invalid状态。这可能是因为本地资源包不可用或下载中断。



在哪里可以找到地图


地图资源包和高精地图可以在《Content website》(链接见文末)上找到。在添加地图时,可以将指向合适资源包的链接作为URL,也可以输入本地路径手动下载资源包。


高精地图可在同一页下载。有关如何将高清地图添加到AD Stack的说明,请参阅相关文档:

《Apollo 5.0》(链接见文末)。

《Apollo 3.0》(链接见文末)。


如何添加地图


1、点击Add new按钮。

2、在打开的对话框中,输入地图的名称和相应资源包的URL。这可以是一个指向云端某个位置的URL(例如,指向《Content website》(链接见文末)上的资源包的链接)或本地驱动上的某个位置(指向environment_xxx文件的绝对路径)。

  • 如果这个URL不在本地,资源包将被下载到本地数据库。



如何编辑地图


1、点击铅笔图标。

2、在打开的对话框中,可以更改地图的名称和指向资源包的URL。

3、如果URL发生更改,数据库中的资源包将被更新(如有必要,可下载)。



如何标注地图


如果已经在旧模拟器中(在HDRP之前)创建了地图,可以通过以下步骤在当前的HDRP模拟器中重新启用这些地图:


  • 在旧的模拟器中

    需要在HDMapTool.cs(第148-154行)的header做一些改变:

     ◆ MapOrigin Northing/Easting转换为Longitude/Latitude

     ◆ Longitude替换leftright的值。

     ◆ Latitude替换topbottom的值。

     ◆ 还需要更改header的区域。




如果有路口注释,需要为每个路口进行注释(具体参见《生成junction》链接见文末)),因为在HDRP模拟器中是基于junction导入路口的。否则,信号/标志不能正确分组,每个信号/标志将作为一个路口对象被创建。



导出地图到Apollo Map文件: base_map.bin。



  • 在当前的HDRP模拟器中

    选择Simulator->Import HD Map,并设置Import Format为Apollo 5 HD Map。

    选择刚刚导出的地图并导入。


  • 注意:需要检查十字路口,一些信号/标志可能分组不正确。

  • 更多地图标注的内容可以参见《地图标注》(链接见文末)。


车辆可以处在以下状态:

  • 带有本地URL或已经下载的Vehicle将处在Vaild状态。

  • 如果到指向Vehicle的资源包的URL不是本地的,并且资源包不在本地数据库中,那么需要下载资源包。

    当前一次只能下载一个资源包。

    如果一个资源包正在下载,Vehicle将显示一个灰色的点,该状态将是Downloading并显示下载百分比。

    如果另一个资源包正在下载,图标将是橙色的,该状态将会Downloading但是不显示下载百分比。

    按停止键可中断正在下载的Vehicle。

  • 如果在模拟中该Vehicle不可用,它将处于Invalid状态。这可能是因为本地资源包不可用或下载中断。



在哪里可以找到车辆


车辆资源包可以在《Content website》(链接见文末)上找到。在添加车辆时,可以将指向合适资源包的链接作为URL,也可以输入本地路径手动下载资源包。


车辆的定位文件可在同一页面下载。有关如何将车辆添加到AD Stack的说明,请参阅相关文档:

《Apollo 5.0》(链接见文末)。

《Apollo 3.0》(链接见文末)。


JSON配置的示例可以在以下页面找到:

《Apollo 5.0》(链接见文末)。

《Apollo 3.0》(链接见文末)。


如何添加车辆


1、点击Add new按钮。

2、在打开的对话框中,输入车辆的名称和相应资源包的URL。这可以是一个指向云端某个位置的URL(例如,指向《Content website》(链接见文末)上的资源包的链接)或本地驱动上的某个位置(指向vehicle_xxx文件的绝对路径)。

3、如果这个URL不在本地,将会下载资源包到本地数据库。



如何编辑车辆


1、点击铅笔图标。

2、在打开的对话框中,可以更改车辆的名称和指向资源包的URL。

3、如果URL发生更改,数据库中的资源包将被更新(如有必要,可下载)。



如何更改车辆的配置


1、点击扳手图标。

2、在打开的对话框中,可以输入车辆的bridge类型和车辆的JSON配置。

3、建议使用JSON美化器使配置更具可读性。

4、桥接类型决定传感器数据将如何适配格式并发送到AD Stack。

5、在向模拟器中添加车辆时,除了No bridge之外的所有bridge类型都需要Bridge Connection String。这个字符串包括AD Stack的IP和开放端口(例如:192.168.1.100:9090)。

6、JSON确定车辆上有哪些传感器、传感器的位置、它们将在什么情况下发布数据以及车辆接受什么控制输入。

《JSON配置示例》(链接见文末)见下文。


有关所有可用传感器的完整定义以及如何将其添加到车辆上,请参见《传感器参数》(链接见文末)。



Bridge类型


  • No bridge:这是默认可用的Bridge。在设置模拟时不需要任何其他信息。在不需要连接到AD Stack时使用。

  • ROS:这个Bridge基于AV Stacks允许连接ROS1 (如Autoware)。在设置模拟配置时,ROS1 Bridge需要IP地址和端口号。

  • ROS Apollo:这个Bridge基于AV Stacks允许连接ROS1,需要protobuf消息格式 (像Apollo 3.0)。在设置模拟配置时,ROS1 Apollo Bridge需要IP地址和端口号。

  • ROS2:这个Bridge允许连接到基于AV Stacks的ROS2。在设置模拟配置时,ROS2 Bridge需要IP地址、端口号。

  • Cyber RT:这个Bridge允许连接到Apollo 5.0。在设置模拟配置时,Cyber RT Bridge需要IP地址、端口号。


JSON示例


这是默认车辆Jaguar2015XE(Autoware)上JSON配置的简化版本,使用ROS Bridge类型。


JSON包括一个位于车辆中心的GPS传感器,用来在 “/ nmea_sentence”上发布数据,还包括一个位于车辆中心上方2.312米的激光雷达传感器,用来在 “/ points_raw”发布数据,还有一个手动控制输入传感器,可以使用键盘来控制汽车,和一个车辆控制输入用来订阅Autoware AD Stack的控制命令。


1[
2{
3"type""GPS Device",
4"name""GPS",
5"params": {
6  "Frequency"12.5,
7  "Topic""/nmea_sentence",
8  "Frame""gps",
9  "IgnoreMapOrigin"true
10},
11"transform": {
12  "x"0,
13  "y"0,
14  "z"0,
15  "pitch"0,
16  "yaw"0,
17  "roll"0
18}
19},
20{
21"type""Lidar",
22"name""Lidar",
23"params": {
24  "LaserCount"32,
25  "MinDistance"0.5,
26  "MaxDistance"100,
27  "RotationFrequency"10,
28  "MeasurementsPerRotation"360,
29  "FieldOfView"41.33,
30  "CenterAngle"10,
31  "Compensated"true,
32  "PointColor""#ff000000",
33  "Topic""/points_raw",
34  "Frame""velodyne"
35},
36"transform": {
37  "x"0,
38  "y"2.312,
39  "z"-0.3679201,
40  "pitch"0,
41  "yaw"0,
42  "roll"0
43}
44},
45{
46"type""Manual Control",
47"name""Manual Car Control"
48},
49{
50"type""Vehicle Control",
51"name""Autoware Car Control",
52"params": {
53  "Topic""/vehicle_cmd"
54}
55}
56]

<左右滑动以查看完整代码>


模拟可以处在以下状态:


  • 如果可以运行,Simulation处在Vaild状态。

  • Simulation会因为以下几个原因而处于Invalid状态:

    Map或者Vehicle在Simulation创建时就已经变成Invalid状态。

    带有Bridge的Vehicle缺少Bridge Connection String。


如何添加/编辑一个仿真


1、 点击Add new按钮或铅笔图标。

2、 打开的对话框有4个选项卡,可以改变模拟的参数:


1. 通用

  • Simulation Name:仿真名称。

  • Select Cluster:从下拉菜单中,选择将要运行模拟的计算机集群。

  • API Only:检查模拟是否通过Python API进行控制。检查此选项将禁用大多数其他选项,因为它们将通过API设置

  • Headless Mode:检查是否需要在主窗口中渲染模拟器。检查这一点将提高性能。



2. 地图&车辆

  • Interactive Mode: 检查此选项以启用模拟控制。

  • Select Map:从下拉菜单中选择要使用的地图。

  • Select Vehicle:从下拉菜单中,选择将要生成的车辆。

  • Bridge Connection String:如果所选车辆具有Bridge Type,则必须向bridge主机提供一个IP:port、

  • +:添加一个额外的车辆。车辆将按顺序在地图的Spawn Info位置产生信息。



3. 交通

  • Use Predefined Seed:检查此选项并输入一个种子[int],该种子将用于精确地控制NPCs。

  • Enable NPC:在模拟开始时,检查NPC车辆是否会出现。

  • Enable Pedestrians:检查这一点,以使行人在模拟开始时出现。



4. 天气情况

  • Time of Day:为模拟设置一天中的时间。

  • Rain:[0-1]设定应该下多少雨。

  • Wetness:[0-1]设置道路的湿度。

  • Fog:[0-1]设置是否有浓雾。

  • Cloudiness:[0-1]设置有多少云量。



主车上的各种传感器是由JSON文件配置的,具体参数说明在这里:

https://www.lgsvlsimulator.com/docs/sensor-json-options/

 




官方支持:

  • F1— 帮助菜单

  • ←↑↓→— 驱动车辆前进/制动,转弯

  • 1-0—代理选择并跟随相机


  • 鼠标右键—按住并拖拽-查看/旋转

  • ~—自由相机

  • WS—缩放

  • AD—扫射

  • QE—上/下


开发人员使用:

  • N—切换非玩家角色(NPC)车辆

  • P—切换行人

  • End—切换点火(必须打开,车辆才能移动)

  • Page Up—切换到前进档

  • Page Down—切换到倒车档

  • F12—车辆位置复位

 

其他操作:

  • H—切换前灯

  • F—切换雾灯

  • I—切换车内灯

  • 右Shift—切换停车制动 (车辆需要熄火来移动)

  • M—切换警示灯

  • <—切换左信号灯

  • >—切换右信号灯

 

罗技G920方向盘输入:

  • Right Pedal RB—加速

  • Middle Pedal LB—制动

  • Rotate Wheel—转弯

  • A—循环通过代理

  • B—切换非玩家角色(NPC)车辆

  • X—切换传感器可视化仪器

  • Y—循环通过相机状态(跟踪相机、影片相机、自由相机)

  • Start—[侧边栏/3水平行]暂停模拟(仅限交互式模拟)

  • Select—[重叠方块]打开菜单

  • RSB—循环通过代理大灯状态

  • LSB—切换反向

  • Center—[Xbox]切换车内灯光(如果可用)




*《官网》

https://www.lgsvlsimulator.com

*《WebUI地图选项卡说明》

https://www.lgsvlsimulator.com/docs/maps-tab/

*《Apollo 5.0》

https://www.lgsvlsimulator.com/docs/apollo5-0-instructions/

https://www.lgsvlsimulator.com/docs/vehicles-tab/#apollo5-0-json-example.md

*《Apollo 3.0》

https://www.lgsvlsimulator.com/docs/apollo-instructions/

https://www.lgsvlsimulator.com/docs/vehicles-tab/#apollo-json-example.md

*《Content website》

https://content.lgsvlsimulator.com/maps/

https://content.lgsvlsimulator.com/vehicles/

*《生成junction》

https://www.lgsvlsimulator.com/docs/map-annotation/#create-junction

*《地图标注》

https://www.lgsvlsimulator.com/docs/map-annotation/

*《JSON配置示例》

https://www.lgsvlsimulator.com/docs/vehicles-tab/#example-json

*《传感器参数》

https://www.lgsvlsimulator.com/docs/sensor-json-options/


以上是"LGSVL Simulator使用详解"的全部内容,更多话题讨论、技术交流可以扫描下方二维码添加『Apollo小哥哥』为好友,进开发者交流群。









您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存